<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>Theron: Theron::Address Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Theron
   &#160;<span id="projectnumber">6.00.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespaceTheron.html">Theron</a></li><li class="navelem"><a class="el" href="classTheron_1_1Address.html">Address</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="classTheron_1_1Address-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">Theron::Address Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>The unique address of an entity that can send or receive messages.  
 <a href="classTheron_1_1Address.html#details">More...</a></p>

<p><code>#include &lt;Address.h&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad497adcd24df041a3fc9304412bc29f6"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_ad497adcd24df041a3fc9304412bc29f6.html#ad497adcd24df041a3fc9304412bc29f6">Address</a> ()</td></tr>
<tr class="memdesc:ad497adcd24df041a3fc9304412bc29f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor.  <a href="#ad497adcd24df041a3fc9304412bc29f6">More...</a><br/></td></tr>
<tr class="separator:ad497adcd24df041a3fc9304412bc29f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06a5c044d22baa712e6890487402da3a"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a06a5c044d22baa712e6890487402da3a.html#a06a5c044d22baa712e6890487402da3a">Address</a> (const char *const name)</td></tr>
<tr class="memdesc:a06a5c044d22baa712e6890487402da3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Explicit constructor.  <a href="#a06a5c044d22baa712e6890487402da3a">More...</a><br/></td></tr>
<tr class="separator:a06a5c044d22baa712e6890487402da3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4cd71d5f629ee4fe987c9047ddb40893"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a4cd71d5f629ee4fe987c9047ddb40893.html#a4cd71d5f629ee4fe987c9047ddb40893">Address</a> (const <a class="el" href="classTheron_1_1Address.html">Address</a> &amp;other)</td></tr>
<tr class="memdesc:a4cd71d5f629ee4fe987c9047ddb40893"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor.  <a href="#a4cd71d5f629ee4fe987c9047ddb40893">More...</a><br/></td></tr>
<tr class="separator:a4cd71d5f629ee4fe987c9047ddb40893"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4cd8a41afe932237ba37a41aaaa32f6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTheron_1_1Address.html">Address</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_ac4cd8a41afe932237ba37a41aaaa32f6.html#ac4cd8a41afe932237ba37a41aaaa32f6">operator=</a> (const <a class="el" href="classTheron_1_1Address.html">Address</a> &amp;other)</td></tr>
<tr class="memdesc:ac4cd8a41afe932237ba37a41aaaa32f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment operator.  <a href="#ac4cd8a41afe932237ba37a41aaaa32f6">More...</a><br/></td></tr>
<tr class="separator:ac4cd8a41afe932237ba37a41aaaa32f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33a1cc68ee53d494a0823e379795f1dc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceTheron_a254da7d1d07833b997828500fbf73daa.html#a254da7d1d07833b997828500fbf73daa">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a33a1cc68ee53d494a0823e379795f1dc.html#a33a1cc68ee53d494a0823e379795f1dc">GetFramework</a> () const </td></tr>
<tr class="memdesc:a33a1cc68ee53d494a0823e379795f1dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets an integer index identifying the framework containing the addressed entity.  <a href="#a33a1cc68ee53d494a0823e379795f1dc">More...</a><br/></td></tr>
<tr class="separator:a33a1cc68ee53d494a0823e379795f1dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2502e3ba2b1d9b5ff92c28586d21c99"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_ab2502e3ba2b1d9b5ff92c28586d21c99.html#ab2502e3ba2b1d9b5ff92c28586d21c99">AsString</a> () const </td></tr>
<tr class="memdesc:ab2502e3ba2b1d9b5ff92c28586d21c99"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the value of the address as a string.  <a href="#ab2502e3ba2b1d9b5ff92c28586d21c99">More...</a><br/></td></tr>
<tr class="separator:ab2502e3ba2b1d9b5ff92c28586d21c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29b5e920da956e60cc6b7e072b1cef27"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceTheron_a254da7d1d07833b997828500fbf73daa.html#a254da7d1d07833b997828500fbf73daa">uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a29b5e920da956e60cc6b7e072b1cef27.html#a29b5e920da956e60cc6b7e072b1cef27">AsInteger</a> () const </td></tr>
<tr class="memdesc:a29b5e920da956e60cc6b7e072b1cef27"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the value of the address as an unsigned 32-bit integer.  <a href="#a29b5e920da956e60cc6b7e072b1cef27">More...</a><br/></td></tr>
<tr class="separator:a29b5e920da956e60cc6b7e072b1cef27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0aad83d593d646deba2bc85a4795a15"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespaceTheron_ade28202127531a0f27728c157d1b925a.html#ade28202127531a0f27728c157d1b925a">uint64_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_ad0aad83d593d646deba2bc85a4795a15.html#ad0aad83d593d646deba2bc85a4795a15">AsUInt64</a> () const </td></tr>
<tr class="memdesc:ad0aad83d593d646deba2bc85a4795a15"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the unique value of the address as an unsigned 64-bit integer.  <a href="#ad0aad83d593d646deba2bc85a4795a15">More...</a><br/></td></tr>
<tr class="separator:ad0aad83d593d646deba2bc85a4795a15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3edac0214695b7289e2b47764eab059a"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a3edac0214695b7289e2b47764eab059a.html#a3edac0214695b7289e2b47764eab059a">operator==</a> (const <a class="el" href="classTheron_1_1Address.html">Address</a> &amp;other) const </td></tr>
<tr class="memdesc:a3edac0214695b7289e2b47764eab059a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Equality operator.  <a href="#a3edac0214695b7289e2b47764eab059a">More...</a><br/></td></tr>
<tr class="separator:a3edac0214695b7289e2b47764eab059a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1187337865fa5c96a6a53309b121bf6c"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a1187337865fa5c96a6a53309b121bf6c.html#a1187337865fa5c96a6a53309b121bf6c">operator!=</a> (const <a class="el" href="classTheron_1_1Address.html">Address</a> &amp;other) const </td></tr>
<tr class="memdesc:a1187337865fa5c96a6a53309b121bf6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Inequality operator.  <a href="#a1187337865fa5c96a6a53309b121bf6c">More...</a><br/></td></tr>
<tr class="separator:a1187337865fa5c96a6a53309b121bf6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae8c29bc06dac520941e5171edeb676f4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_ae8c29bc06dac520941e5171edeb676f4.html#ae8c29bc06dac520941e5171edeb676f4">operator&lt;</a> (const <a class="el" href="classTheron_1_1Address.html">Address</a> &amp;other) const </td></tr>
<tr class="memdesc:ae8c29bc06dac520941e5171edeb676f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Less-than operator.  <a href="#ae8c29bc06dac520941e5171edeb676f4">More...</a><br/></td></tr>
<tr class="separator:ae8c29bc06dac520941e5171edeb676f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a0974898ddb72c606fefff6f0ac6baf2d"><td class="memItemLeft" align="right" valign="top">static const <a class="el" href="classTheron_1_1Address.html">Address</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTheron_1_1Address_a0974898ddb72c606fefff6f0ac6baf2d.html#a0974898ddb72c606fefff6f0ac6baf2d">Null</a> ()</td></tr>
<tr class="memdesc:a0974898ddb72c606fefff6f0ac6baf2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Static method that returns the unique 'null' address.  <a href="#a0974898ddb72c606fefff6f0ac6baf2d">More...</a><br/></td></tr>
<tr class="separator:a0974898ddb72c606fefff6f0ac6baf2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The unique address of an entity that can send or receive messages. </p>
<p>Addresses are the unique 'names' of entities that can receive messages in <a class="el" href="namespaceTheron.html" title="Main namespace containing all public API components. ">Theron</a>. Knowing an entity's address is enough to be able to send it a message, and no other special access or permissions are required.</p>
<p>The types of entities that have addresses, and therefore can receive messages, in <a class="el" href="namespaceTheron.html" title="Main namespace containing all public API components. ">Theron</a> are <a class="el" href="classTheron_1_1Actor.html">actors</a> and <a class="el" href="classTheron_1_1Receiver.html">receivers</a>. Both of these types of entities are assigned automatically-generated unique addresses on construction.</p>
<p>Addresses can be copied and assigned, allowing the addresses of actors and receivers to be <a class="el" href="classTheron_1_1Actor_a47c64d58a7a683b34101002989d7de0a.html#a47c64d58a7a683b34101002989d7de0a">sent in messages</a> to other actors.</p>
<dl class="section note"><dt>Note</dt><dd>Addresses can't currently be sent in messages to remote actors over the network, since they can't be copied trivially by means of memcpy.</dd></dl>
<p>Default-constructed addresses are <em>null</em> and are equal to the unique null address returned by the static <a class="el" href="classTheron_1_1Address_a0974898ddb72c606fefff6f0ac6baf2d.html#a0974898ddb72c606fefff6f0ac6baf2d">Address::Null</a> method, which is guaranteed not to be equal to the address of any addressable entity.</p>
<p>Because knowing the address of an actor means being able to send it a message, addresses constitute the security and encapsulation mechanism within <a class="el" href="classTheron_1_1Actor.html">actor</a> subsystems. If an actor creates a collection of 'child' actors that it owns and manages, then no code outside that actor can access the child actors or send them messages, unless the actor publicly exposes either the actors or their addresses. </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.5
</small></address>
</body>
</html>
